package br.lelu;

public class Pilha {

	    private Object valorOrbital;
	    private Pilha proximo;

	    // Get e Set
	    public void setProximo(Pilha proximo) {
	        this.proximo = proximo;
	    }

	    public void setValorOrbital(Object valorOrbital) {
	        this.valorOrbital = valorOrbital;
	    }

	    public Pilha getProximo() {
	        return this.proximo;
	    }

	    public Object getValorOrbital() {
	        return this.valorOrbital;
	    }
	    // Fim Get e Set

	    // Operacoes em Pilha

	    // Insercao
	    public void push(Pilha pilha, Object valorOrbital){
	        Pilha temporario = new Pilha();
	        temporario.setValorOrbital(valorOrbital);
	        temporario.setProximo(pilha.getProximo());
	        pilha.setProximo(temporario);
	    }
	    // Fim insercao

	    // Remocao
	    public void pop(Pilha pilha){
	        Pilha temporario = new Pilha();
	        if(pilha.vazia(pilha) == true){
	            temporario = pilha.getProximo();
	            pilha.setProximo(temporario.getProximo());
	            temporario = null;
	        }
	        else{
	            System.out.println("A pilha esta vazia");
	        }
	    }
	    // Fim remocao

	    // Imprime - Neste caso, verfica-se somente o topo
	    public Integer top(Pilha pilha){
	        Pilha temporario = new Pilha();
	        temporario = pilha.getProximo();
	        if(temporario.vazia(temporario) == true){
	           //System.out.println("Topo : "+temporario.getValorOrbital());
	        return (Integer) temporario.getValorOrbital();
	        }
	        else{
	        	return null;
	           //System.out.println("Pilha Vazia");
	        }

	    }
	    // Fim Top

	    // Vazia
	    public boolean vazia(Pilha pilha){
	        if(pilha == null)
	            return(false);
	        else
	            return(true);
	    }
}
